package com.itheima.health.controller;

import com.itheima.health.common.MessageConst;
import com.itheima.health.common.RedisConst;
import com.itheima.health.dto.SmsLoginDTO;
import com.itheima.health.entity.Result;
import com.itheima.health.pojo.Member;
import com.itheima.health.service.MemberService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 登录控制器
 */
@RestController
@RequestMapping("/mobile/login")
@Slf4j
@Api(tags = "手机端登录接口")
public class MobileLoginController {
    @Autowired
    private RedisTemplate redisTemplate;

    @Autowired
    private MemberService memberService;

    @PostMapping("/smsLogin")
    public Result login(@RequestBody SmsLoginDTO smsLoginDTO, HttpServletRequest request){
        //验证码校验
        String telephone = smsLoginDTO.getTelephone();
        String validateCode = smsLoginDTO.getValidateCode();
        //找键  因为此业务是移动端登录业务 所以 type就是  MOBILE_SIGNIN
        // 按照规则去查找
        String redisKey = RedisConst.VALIDATE_CODE_PREFIX +"_MOBILE_SIGNIN_"+telephone;
        //这种key的写法是遵循一种开发默认规则 不同公司规则不同
        //从redis 获取  验证码
        String code = redisTemplate.opsForValue().get(redisKey)+"";

        if (!StringUtils.isEmpty(code) && code.equals(validateCode)) {
            //如果匹配则删除redis并返回true
            redisTemplate.delete(redisKey);
            // 登录即注册---传递 手机号  去查询是否存在存在就不用注册 不存在就是新会员

            //创建用户 --- 用来封装 当前用户的手机号
            memberService.registe(telephone);//如果手机号不存在就是新增

            //登录（模拟，直接输出成功）
            log.info("手机号为"+telephone+"的用户[登录成功]》》》》》》》》》》》》》》》》》》》》》》》》{}");
            return new Result(true, MessageConst.LOGIN_SUCCESS);
        }else{
            return new Result(false, MessageConst.VALIDATECODE_ERROR);
        }
    }
}


